﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel.DataAnnotations;
using InpValidator;
using System.ComponentModel;
using System.Runtime.Serialization;

namespace AdminModule.IndexMarkServiceReference
{
    public partial class DTOBase
    {
        public DTOBase()
        {
            this._Enabled = false;
            this._Checked = false;
            this._isVisibility = true;
        }

        [OnDeserializingAttribute]
        public void Init2(StreamingContext context)
        {
            this._Enabled = false;
            this._Checked = false;
            this._isVisibility = true;
        }

        [OnDeserializedAttribute]
        public void Init(StreamingContext context)
        {
            this._Enabled = false;
            this._Checked = false;
            this._isVisibility = true;
        }

        /// <summary>
        /// Возвращает значение свойства-ключа. Используется в SelectAddItemsWindow.xaml для сравнения объектов
        /// </summary>
        /// <returns></returns>
        public virtual int GetKey()
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Возвращает тип объекта. Стандартный метод не подходит, так как для объекта Respondent необходимо возвращать Person.
        /// Используется в SelectAddItemsWindow.xaml одновременно с GetKey() при сравнении объектов
        /// </summary>
        /// <returns></returns>
        public virtual Type GetObjType()
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Копирование значений атрибутов. Используется в стратегии замены элемента
        /// </summary>
        /// <param name="copyFrom">Старый объект</param>
        public virtual void CopyFrom(DTOBase copyFrom)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Атрибут, необходимый для TreeView в файле SelectAddItemsWindow.xaml
        /// </summary>
        private bool _Enabled;
        public bool Enabled 
        {
            get 
            { 
                return _Enabled; 
            }
            set { _Enabled = value; this.RaisePropertyChanged("Enabled"); } 
        }

        /// <summary>
        /// Атрибут, необходимый для TreeView в файле SelectAddItemsWindow.xaml
        /// </summary>
        private bool _Checked;
        public bool Checked 
        { 
            get 
            { 
                return _Checked; 
            }
            set { _Checked = value; this.RaisePropertyChanged("Checked"); } 
        }

        /// <summary>
        /// Используется в UserControls структуры ИС, университета, и градаций чтобы скрыть фейковые дочерние узлы
        /// необъодимые для того, чтобы слева от узла в TreeView отображалась "стрелочка" (по умолчанию = true).
        /// </summary>
        private bool? _isVisibility;
        public bool? IsVisibility
        {
            get
            {
                return _isVisibility;
            }
            set { _isVisibility = value; this.RaisePropertyChanged("IsVisibility"); }
        }
    }
}
